The present invention generally relates to an improvement to a computer system such as a system for static source code analysis of a computer program product, and more specifically, to customizing static source code analysis of application programming interface instructions.
Computer program products, including software, are an important aspect of modern life with people relying on software for various day to day and in some cases vital activities. As a consequence, quality of the software is a major concern. Software development is a distributed effort involving tens if not hundreds of developers and many more lines of code. The larger the software project, the greater the number of individuals adding, editing, and testing code. It is recognized that tools are needed in the software development and testing process to allow project managers and other personnel to improve productivity, improve quality, reliability and reduce expenditure.
Typical software analysis tools provide the ability to independently analyze software source code statically and dynamically. Static analysis can identify correctness issues in code without actually executing that code, through techniques such as data flow analysis, value tracking, and the like. Dynamic analysis can provide information pertaining to timing and how much memory is allocated, for example.
Yet, the tools available to quickly identify and prioritize quality issues within software projects are limited. Major advances have been made towards designing techniques to help software developers to improve the quality of the software. However, finding effective quantitative, objective quality measurements of software has remained elusive. Nevertheless, quantitative, objective measurements are needed, since they provide a concrete means to communicate, reproduce, analyze, and compare outcomes, particularly with respect to large scale software projects, commonly referred to as enterprise software.
Typically, analysis tools are used for identifying quality issues in the software source code, however it is desired that the analysis tools also provide features such as enabling quicker modernization of applications and increasing productivity, particularly by understanding what application programming interface calls used in the source code actually do.